Debug Node Registration Issues
This guide helps you debug issues that occur when registering nodes (devices) with a private ESP RainMaker deployment. Node registration is typically performed using the ESP RainMaker Admin CLI, which generates device certificates and bulk-registers nodes via an AWS Batch job.
Before you start, have these ready:
- The
request_idreturned after runningcerts devicecert register - The
node_id(s) of the affected nodes - The admin user ID (email) used to run the registration
- Approximate time when the registration was triggered
Step 1: Identify Your Symptom
| Symptom | Go to |
|---|---|
Admin CLI generate command fails with an error | Admin CLI — Certificate Generation Errors |
Admin CLI register command fails before submitting the job | Admin CLI — Registration Submission Errors |
| Registration job submitted but no confirmation email received | Registration Job Submitted — No Email or Status Unknown |
getcertstatus shows FAILURE or some nodes failed | Registration Job Failed or Partial Failures |
Registration job is stuck in REQUESTED or INPROGRESS for too long | Registration Job Stuck or Timed Out |
| Nodes registered but not visible on the RainMaker Dashboard | Nodes Not Visible on the RainMaker Dashboard |
| Node is registered but the device cannot connect to the cloud | Node Registered but Device Cannot Connect |
| Getting a specific error code (106xxx / 200xxx) | Error Code Reference |
Node Registration Overview
Understanding the flow helps you identify at which stage a failure occurred.
Step 1 Admin CLI generates certificates locally → node_certs.csv
Step 2 CLI calls GET /admin/node_certificates/register → gets S3 pre-signed URL + request_id
Step 3 CLI uploads node_certs.csv to S3
Step 4 CLI calls POST /admin/node_certificates/register → triggers AWS Batch job
Step 5 AWS Batch processes each node: creates IoT Thing, registers certificate,
attaches policy, writes to DynamoDB nodes_v3 table
Step 6 Admin receives email with job summary
Step 7 Device boots, connects to MQTT, publishes config → node visible on dashboard
Admin CLI — Certificate Generation Errors
These errors occur when running python rainmaker_admin_cli.py certs devicecert generate.
Check 1: Verify the command arguments
| Error Message | Cause | Fix |
|---|---|---|
"Maximum of 50,000 nodes generation supported in a single request." | --count exceeds 50,000 | Split into multiple batches with --count ≤ 50000 |
"<count> must be > 0" | Count is zero or negative | Provide a valid --count value |
"'node_id' column not found in file" | --inputfile CSV is missing the node_id column | Ensure the input CSV has a header row with node_id as the column name |
"CA key file is not provided" / "CA cert file is not provided" | Only one of --cacertfile / --cakeyfile was given | Provide both --cacertfile and --cakeyfile together |
"At least one of the following must be provided: --count, ADDITIONAL_VALUES, --inputfile" | No node count source specified | Provide --count, --inputfile, or configure ADDITIONAL_VALUES in config/binary_config.ini |
Check 2: Verify the output directory
After a successful generate, confirm these files exist in the output directory:
<outdir>/<date>/Mfg-<N>/
common/
node_certs.csv ← required for the next `register` step
ca.crt ← CA certificate
node_ids.csv ← list of generated node IDs
endpoint.txt ← MQTT broker hostname
node_details/
node-<idx>-<node_id>/
node.crt ← device certificate
node.key ← device private key
If any of these files are missing, re-run generate. If the output directory is missing entirely, the tool failed before writing any files — check for Python exceptions in the terminal output.
The node_certs.csv in common/ is the input file for the register command. Use the full path when calling register --inputfile.
Admin CLI — Registration Submission Errors
These errors occur when running python rainmaker_admin_cli.py certs devicecert register.
Check 1: Validate the input CSV
| Error Message | Cause | Fix |
|---|---|---|
"Input file is invalid. Please provide file containing the certificates" | CSV has no certs column or all cert values are empty | Use the node_certs.csv generated by the generate step |
"Column count mismatch in row N" | The CSV has inconsistent column counts | Open the CSV in a text editor and fix the row with index N |
"Certificate CN 'X' does not match node_id 'Y'" | The certificate's Common Name does not match the node_id column | Regenerate the certificates — CN mismatch means the cert and node ID are from different batches |
"Invalid CSV file" (error 106026) | CSV format is malformed | Validate the CSV with a CSV linter; check for unescaped quotes or missing commas |
Check 2: Validate tags and policies
| Error Message | Cause | Fix |
|---|---|---|
"Invalid tags specified by user. Check tags format." | Tags are not in key:value format | Use --tags key1:value1,key2:value2 |
"Invalid tags specified by user. Check whether the tags are referencing the proper column names." | A tag references a CSV column that doesn't exist | Ensure the column name in --tags key:@column_name exactly matches a column in the CSV |
"--node_policies option cannot be used together with --update_nodes." | Conflicting flags | Remove --node_policies when using --update_nodes |
"Invalid value for --node_policies" | Unknown policy name | Valid values are mqtt and videostream |
Check 3: Verify connectivity and authentication
| Error Message | Cause | Fix |
|---|---|---|
"Could not connect. Please check your Internet connection." | Admin CLI cannot reach the RainMaker backend | Check your internet connection; verify the server endpoint is correct: account serverconfig |
"HTTP Request timed out." | Request took longer than 30 seconds | Retry. If this persists, check if the backend is reachable |
"Failed to upload Device Certificates" | S3 pre-signed URL upload failed | The pre-signed URL may have expired (1-hour validity). Re-run register to get a fresh URL |
"Request to register device certificate failed" | The POST /admin/node_certificates/register API call failed | Check the exact HTTP error code in the output. Run with verbose logging if available |
"Unable to verify SSL certificate." | TLS verification failed | Verify that rmaker_admin_lib/server_cert/server_cert.pem is the correct certificate for your deployment |

